package com.hyt.it.ogt.kq.service.gov.model.excel.listener;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.fastjson.JSON;
import com.hyt.core.util.UUIDUtils;
import com.hyt.it.ogt.kq.common.config.exception.KqException;
import com.hyt.it.ogt.kq.common.gov.utils.TextUtil;
import com.hyt.it.ogt.kq.service.gov.model.excel.ImportPlaceRoomSheet;

import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;

/**
 * @author wangrl
 * @since 2021/9/3
 */

@Slf4j
public class PlaceRoomListener extends AbstractAnalysisListener<ImportPlaceRoomSheet>{

    private  List<ImportPlaceRoomSheet> list ;
    private  List<String> roomNames ;

    public PlaceRoomListener(){
        this.list =  new ArrayList<ImportPlaceRoomSheet>();
        this.roomNames = new ArrayList<String>() ;
    }

    /**
     * 这个每一条数据解析都会来调用
     *
     * @param data
     * @param context
     */
    @SneakyThrows
    @Override
    public void invoke(ImportPlaceRoomSheet data, AnalysisContext context)throws KqException {
        String strData = JSON.toJSONString(data);
        log.info("解析到一条数据:{}",strData );

        if(!TextUtil.checkObjAllFieldsIsNull(data)){
            //验证数据
            String roomName = data.getRoomName();
            //根据roomName去重
            data.setId(UUIDUtils.newSortUUID());
            list.add(data);
            roomNames.add(roomName);
            /*if(roomNames.contains(roomName)){
                throw new KwGovException(ResponseCode.PLACE_ROOM_FILE_IMPORT_ERROR, "导入信息存在相同的考场名称");
            }else{
            }*/
        }


    }

    /**
     * 所有数据解析完成了 都会来调用
     *
     * @param context
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 这里也要保存数据，确保最后遗留的数据也存储到数据库
        log.info("所有数据解析完成！",list.size());
    }

    /**
     * 获取验证后的数据
     * @return
     */
    public List<ImportPlaceRoomSheet> getImportTaskCandidates() {
        return this.list;
    }

}
